💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    23 pandas와 SQL 개요 | ✅ 저자: 이유정(박사)

    Pandas가 데이터를 읽을 수 있는 위치

    • 📂 클라우드 저장소: 예를 들어 Google Drive, AWS S3, Dropbox 같은 곳에 저장된 파일
    • 🗄️ 데이터베이스: MySQL, PostgreSQL, SQLite 같은 전문적인 데이터 저장 시스템

    즉, Pandas는 파일뿐만 아니라 원격 서버나 데이터베이스에서도 데이터를 가져올 수 있어요.

    SQL이란? (Structured Query Language)

    • SQL은 데이터베이스에서 데이터를 다루기 위한 표준 언어예요.
    • 주로 다음과 같은 일을 할 수 있어요:
      • 데이터를 조회하기 (ex: 30대 고객만 보기)
      • 데이터를 추가하기 (ex: 새 고객 등록)
      • 데이터를 수정하기 (ex: 이름 변경)
      • 데이터를 삭제하기 (ex: 탈퇴 고객 제거)

    그리고 SQL은 복잡한 조건으로 데이터를 뽑거나, 아주 큰 데이터도 빠르게 처리할 수 있어요.

    🔁 SQL과 Pandas는 서로 연결될 수 있어요

    • SQL → Pandas DataFrame

      • SQL에서 데이터를 읽어서 Pandas로 가져올 수 있어요.
      • 예: SELECT * FROM orders;pd.read_sql(...)
    • Pandas DataFrame → SQL

      • Pandas에서 정리한 데이터를 SQL 데이터베이스에 저장할 수도 있어요.
      • 예: df.to_sql(...)을 이용해서 테이블로 저장

    터미널에 설치:

    pip install pymysql 
    pip install sqlalchemy
    

    PyMySQL은 파이썬에서 MySQL 데이터베이스에 접속할 수 있게 해주는 라이브러리 SQLAlchemy는 파이썬과 데이터베이스를 연결해주는 고급 도구

    WSL2 환경이면, IP 바뀌었는지 확인

    ip addr | grep inet
    

    WSL2에서는 리눅스 쪽의 내부 IP가 재부팅할 때마다 바뀌기 때문에,
    이전과 다른 IP로 바뀌었는지를 직접 확인해야 할 때가 많습니다.

    결과 예시:

    inet 127.0.0.1/8 scope host lo
    inet 172.20.203.81/20 brd 172.20.207.255 scope global eth0
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
    

    여기서 진짜 WSL의 내부 IP는 eth0에 있는 이 부분이에요:

    inet 172.20.203.81/20 scope global eth0
    

    즉, 이 경우 IP는 → 172.20.203.81

    Jupyter Notebook (또는 Python 스크립트) 에서 사용할 수 있는 SQLAlchemy 기반의 MySQL 연결 코드

    from sqlalchemy import create_engine
    import pandas as pd
    
    # 접속 정보 입력
    import pandas as pd
    from sqlalchemy import create_engine
    
    # SQLAlchemy 엔진 생성
    # MySQL 데이터베이스에 연결할 수 있는 **엔진 객체**를 만드는 명령
    engine = create_engine("mysql+pymysql://django_user:DjangoUserPass!123@172.20.203.81:3306/restaurant_db")
    
    # 접속
    connection = engine.connect()
    
    # restaurant_restaurant 테이블의 모든 데이터를 선택(select)해라
    query = "SELECT * FROM restaurant_restaurant;"
    
    # 데이터프레임으로 불러오기
    df = pd.read_sql(query, connection)
    
    # 결과 확인
    print(df.head())
    

    SQLAlchemy 엔진(Engine)은 파이썬 코드와 데이터베이스(DB) 사이를 연결해주는 "다리(bridge)" 역할을 합니다. 즉, SQLAlchemy 엔진은 데이터베이스와의 연결(커넥션)을 생성하고 관리해주는 객체입니다.

    SQL 쿼리문(SQL Query) SELECT

    • 데이터를 가져오겠다는 명령 *
    • 모든 열(컬럼)을 가져오겠다는 뜻 (name, address, created_at 등 전체) FROM restaurant_restaurant
    • 대상 테이블 이름 → restaurant_restaurant 테이블에서 가져오겠다는 뜻 ;
    • SQL 문장의 끝 (파이썬에서는 없어도 되지만, SQL 문법상 붙이는 게 일반적)

    테이터 확인을 위해 dbever도 실행해 줍니다. vscode에서 dbever접속

    sudo service mysql start
    sudo service mysql status
    

    WSL2 환경에서, IP 바뀌었다면 바뀐 ip로 서버 호스트를 변경한후 접속하세요.

    TOP
    preload preload